# 函数嵌套
def func_one():
    print('---- func_one start ----')
    print(' 代码 ')
    print('---- func_one end ----')

def func_two():
    print('---- func_two start ----')
    func_one()
    print('---- func_two end ----')

func_two()

# 局部变量
def test_one():
    number = 100
    print('tese_one 中的 number 值为：%d'%number)

def test_two():
    number = 200
    print('tese_two 中的 number 值为：%d' % number)

test_one()
test_two()

#全局变量
print('-'*20)
result = 100
def sum(a,b):
    result = a + b
    print('函数内部的 result 值：', result)
    return result
sum(100,200)
print('函数外部的 result 值：', result)

print('-'*20)
def func(num):
    if num == 1:
        return 1
    else:
        return func(num - 1) * num
    # return result
number = int(input("输入数字 number："))
print(func(number))

# 匿名函数
print('-'*20)
add = lambda a,b : a+b
print(add(10,20))
print(add(20,20))

print('-'*20)

def func(a,b,operation):
    print('a=%d'%a)
    print('b=%d'%b)
    print('result=',operation(a,b))
func(11,22,lambda x,y:x+y)
func(11,22,lambda x,y:x-y)

print('-'*20)
students = [
    {'name':'zhangsan','age':18},
    {'name':'lisi','age':19},
    {'name':'wangwu','age':17}
]
# 按 name 排序
students.sort(key = lambda x:x['name'])
print('按 name 排序后的结果：',students)
# 按 age 排序
students.sort(key = lambda x:x['age'])
print('按 age 排序后的结果：',students)